package com.cougil.uoc.seghismed.action;

import java.util.HashSet;
import java.util.Set;

import com.cougil.uoc.seghismed.business.MetgeClientService;
import com.cougil.uoc.seghismed.model.Historial;
import com.cougil.uoc.seghismed.model.Metge;
import com.cougil.uoc.seghismed.model.Pacient;
import com.cougil.uoc.seghismed.model.Visita;
import com.cougil.uoc.seghismed.model.struts.Mode;
import com.opensymphony.xwork2.Action;

public class PacientAction extends SeghismedAction {

	private static final long serialVersionUID = 4129893374494860258L;

	private Historial historial;
	private Integer id;
	private Integer idPacient;
	private Metge metge;
	private Pacient pacient;
	private Visita visita;

	// visites associades l'historial
	private Set<Visita> visitesProtegides = new HashSet<Visita>();

	public PacientAction() {
	}

	/*
	 * (non-Javadoc)
	 *
	 * @see com.cougil.uoc.seghismed.action.SeghismedAction#getClientService()
	 */
	@Override
	protected MetgeClientService getClientService() {
		return (MetgeClientService) this.clientService;
	}


	/**
	 * @return Retorna el valor de la propietat id
	 */
	public Integer getId() {
		return this.id;
	}


	/**
	 * @return Retorna el valor de la propietat idPacient
	 */
	public Integer getIdPacient() {
		return this.idPacient;
	}

	/**
	 * @return Retorna el valor de la propietat metge
	 */
	public Metge getMetge() {
		return this.metge;
	}

	/**
	 * @return Retorna el valor de la propietat pacient
	 */
	public Pacient getPacient() {
		return this.pacient;
	}

	/**
	 * @return Retorna el valor de la propietat visita
	 */
	public Visita getVisita() {
		return this.visita;
	}

	/**
	 * @return Retorna el valor de la propietat visitesProtegides
	 */
	public Set<Visita> getVisitesProtegides() {
		return this.visitesProtegides;
	}

	/**
	 * @param Estableix historial com a valor de la propietat historial
	 */
	public void setHistorial(Historial historial) {
		this.historial = historial;
	}

	/**
	 * @param Estableix
	 *            id com a valor de la propietat id
	 */
	public void setId(Integer id) {
		this.id = id;
	}

	/**
	 * @param Estableix
	 *            idPacient com a valor de la propietat idPacient
	 */
	public void setIdPacient(Integer idPacient) {
		this.idPacient = idPacient;
	}

	public void setPacient(Pacient p) {
		this.pacient = p;
	}

	/**
	 * @param Estableix visita com a valor de la propietat visita
	 */
	public void setVisita(Visita visita) {
		this.visita = visita;
	}

	/**
	 * @param Estableix visitesProtegides com a valor de la propietat visitesProtegides
	 */
	public void setVisitesProtegides(Set<Visita> visitesProtegides) {
		this.visitesProtegides = visitesProtegides;
	}

	public String showHistorial() {
		this.setMode(Mode.SHOW, "historial");
		// tornem a associar el metge, per poder mostrar com a mínim les seves dades principals
		this.metge = (Metge) this.getClientService().getUsuari();
		// tornem a associar el pacient, pel mateix motiu
		this.pacient = this.getClientService().consultarPacient(new Pacient(this.getId()));
		// consultem el seu historial
		this.historial = this.getClientService().consultarHistorial(this.pacient);
		// i desxifrem les visites protegides a mostrar
		this.visitesProtegides = this.getClientService().desxifrarVisitesProtegides(this.historial);
		return Action.SUCCESS;
	}

	public String showPacient() {
		this.setMode(Mode.SHOW);
		// tornem a associar el metge, per poder mostrar com a mínim les seves dades principals
		this.metge = (Metge) this.getClientService().getUsuari();
		this.pacient = this.getClientService().consultarPacient(new Pacient(this.getId()));
		return Action.SUCCESS;
	}

	public String showVisita() {
		this.setMode(Mode.SHOW, "visita");
		// tornem a associar el metge, per poder mostrar com a mínim les seves dades principals
		this.metge = (Metge) this.getClientService().getUsuari();
		// tornem a associar el pacient, pel mateix motiu
		this.pacient = this.getClientService().consultarPacient(new Pacient(this.getIdPacient()));
		// consultem la visita corresponent
		this.visita = this.getClientService().consultarVisita(this.pacient, new Visita(this.getId()));
		return Action.SUCCESS;
	}


}
